package com.itbaizhan.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class ControllerToException {
    //处理单个Controller的异常：
    @RequestMapping("/t1")
    public String t1(){
        String str = null;
        //str.length();//空指针
        //int a=1/0;//数学异常
        int[] arr = new int[1];
        arr[2] = 10;
        return "index";
    }
    /*ex 异常对象
    * model  模型对象*/
    /*@ExceptionHandler:表示该方法是处理异常的方法，属性为处理的异常类*/
    //@ExceptionHandler(java.lang.NullPointerException.class)
    @ExceptionHandler({java.lang.NullPointerException.class,java.lang.ArithmeticException.class})
    public String exceptionHandle1(Exception ex, Model model){
        //向模型添加异常对象
        model.addAttribute("msg",ex);
        //跳转到异常页面
        return "error";
    }
    //方法一不能处理的异常交给方法二处理
    @ExceptionHandler(java.lang.Exception.class)
    public String exceptionHandel2(Exception ex,Model model){
        model.addAttribute("msg",ex);
        return "error2";
    }
}
/*在系统当中， Dao、Service、Controller层代码出现都可能抛出异常。
如果哪里产生异常就在哪里处理，则会降低开发效率。
所以一般情况下我们会让异常向上抛出，最终到达DispatcherServlet中，
此时SpringMVC提供了异常处理器进行异常处理，这样可以提高开发效率。*/